![[アップデート]CloudTrail LakeでCloudTrail Insightsのイベントデータストアが作成できるようになりました](https://devio2023-media.developers.io/wp-content/uploads/2023/08/aws-cloudtrail.png)
[アップデート]CloudTrail LakeでCloudTrail Insightsのイベントデータストアが作成できるようになりました
あしざわです。
少し前のアップデートになりますが、AWS CloudTrail LakeがCloudTrail Insightsをサポートし、CloudTrail Insightsのイベントデータストアが作成できるようになりました。
こちらの内容は、2023/11/15のAWS What’s newブログで公開されています。
本ブログでは、こちらのアップデートの内容の紹介、以前とどう変わったのかについて紹介します。
各サービスについて
まずはアップデートに関連する CloudTrail LakeおよびCloudTrail Insightsの各サービスについて振り返ってみましょう。
CloudTrail Lakeについて
CloudTrail Lakeは 、CloudTrailのログ取得機能に合わせてサービス内でクエリを利用したログ分析が機能が利用可能になるサービスです。
2023年6月のアップデートでダッシュボード機能が追加され、CloudTrailイベントの可視化がより簡単になっています。
CloudTrail Insightsについて
CloudTrailにはCloudTrail Insightsという機械学習を利用してAPIエラー率やAPIレート率の上昇を検知することで、AWSアカウント上の意図しない動作や異常な振る舞いを発見できる機能があります。
これまでCloudTrail InsightsはCloudTrailのみに対応していましたが、本アップデートによりCloudTrail LakeでもInsightsが利用可能になりました。ダッシュボード機能もInsightsに対応しているため簡単な可視化も可能です。後述するやってみたフェーズでも紹介しますがCloudTrail LakeのイベントデータストアにInsightsイベントが作成できるようになっています。
アップデートによって何が、どう変わったのか?
このアップデートがもたらす大きなメリットは「Organizations組織でCloudTrail Insightsイベントをログ集約する際、メンバーアカウントのコスト増なしでイベント取得できる選択肢が増えたこと」であると思っています。
この一文だと理解しづらいと思うため、以下もう少し噛み砕いて説明します。少し長いですがご容赦ください。
アップデート以前の話
CloudTrailの証跡を利用すると、CloudTrailイベントログをS3バケットかCloudWatch Logsの永続ストレージに送信できるようになります。デフォルトの設定ではCloudTrailイベントは90日間経つと削除されてしまうため、CloudTrailイベントログを長期間保存するためには証跡の利用が必須です。
Organizationsのようなマルチアカウント環境においてCloudTrail証跡を利用する場合、組織証跡を利用すれば各メンバーアカウントへの証跡設定を自動化できるため、CloudTrail周りの初期設定を簡素化できます。メンバーアカウント側で組織証跡の設定変更はできないため証跡の設定変更を防止するガードレールとしての役割も期待できます。
組織証跡については以下記事も参考にしてください。
ただしこれは設定の簡素化でありコストを証跡の管理アカウントに集約しているわけではないため、組織証跡の利用におけるコストが通常の証跡を利用するのと同様で証跡の利用コストは各メンバーアカウント側で発生します。
CloudTrail証跡は管理イベントを記録する証跡であればアカウント毎に1つまでの無料枠があるため、CloudTrail証跡1つまでだったら無料で利用できます。無料枠は組織証跡でも同じ考えで適用されるため、Organizations組織全体で統一してその組織証跡1つのみでCloudTrailイベントを記録するようにすれば組織全体でCloudTrail証跡を無料で使用できます。
CloudTrail Insightsは証跡単位で有効化でき、有効化すると証跡の管理イベントを分析しベースラインを作成します。その後分析対象のCloudTrail管理イベントでベースラインを基準としたAPIレートの上昇やエラーレートの上昇を検知するとInsightsイベントが発生し、証跡で設定されたS3バケットにログが生成されます。Insightsイベントを利用することでアカウント上の異常なAPI実行の検知やトラッキングが可能になります。
CloudTrail Insightsは「インサイトタイプごとに分析された 100,000 件のイベントあたり 0.35 USD」という課金形態になっており、無料枠は存在しないので別途料金が発生します。
組織の中で証跡が1つしかないOrganizations環境で組織証跡を有効化し、組織証跡でCloudTrail Insightsを有効化すると以下のような状況になります。
- CloudTrail証跡の管理アカウントのみでCloudTrailの設定ができる
- 管理イベントのログ記録にかかる料金はすべてのアカウントで発生しない
- Insightsイベントのログ記録にかかる料金はすべてのアカウントで発生する
この状態だと、メンバーアカウント側からするとアカウントを利用しているだけでCloudTrail Insightsの費用が常に発生しており設定変更ができない、という状況になります。ガバナンス的には問題がありませんが、CloudTrailの費用はワークロードに直接関連しない費用になるため、このコストが気になるケースもあるはずです。
例えば全社的に利用されている大規模なOrganizations環境を管理している場合、Orgnaizations管理アカウントとメンバーアカウントの管理部署が異なり 予算も異なるというケースです。この場合、自分たちの判断で導入していないセキュリティガバナンスに関する費用にあまりコストをかけたくない、むしろゼロに抑えたいという要望も出てくるはずです。これまでの証跡によるInsights運用ではこれが実現できませんでした。
アップデート後の話
そんな状況が本ブログで取り扱うアップデートより変わりました
CloudTrail LakeでCloudTrail Insightsが有効化できるようになったことで、CloudTrail証跡を使わないでCloudTrail Insightsのログを集約できるようになりました。
CloudTrail Lakeは証跡の概念とは異なり「イベントデータストア」というS3ではない独自のストレージにCloudTrailイベントを保存します
イベントデータストアはCloudTrail Lakeを有効化したアカウント上にのみ作成され、各メンバーアカウントに作成されません。
CloudTrail LakeでInsightsを有効化するとイベントデータストアに対しInsightsが有効化されます。つまりInsightsの料金はイベントデータストアがあるアカウントでのみで発生します。
CloudTrail Lakeで主にコストがかかる箇所は以下で、データの送信に料金は発生しないためメンバーアカウント側での料金は発生しません。
- データの取り込み:CloudTrail の管理およびデータイベント: 0.75 USD/GB
- データクエリ:スキャンされたデータ 0.005 USD/GB
また、CloudTrail Lakeデータの取り込み料金は先日のアップデートによって新しいオプションが追加され、従来の三分の一の料金から利用できるようになっています。長期間のデータの保存要件がなければこちらを使うことでコストパフォーマンス良く利用できます。
CloudTrail Lakeを使えば組織のログ集約だけでなく、クエリエディタや自動ダッシュボード機能が利用できるためクエリや可視化用の環境を別途準備する手間が省けます。嬉しいですね。
それではここからは手を動かして、実際に作成できるか確認してみます。
やってみた
CloudTrail Lakeで管理イベントの異常検知を行うInsightsイベントを取得する場合、以下の流れで構築を進めます
- CloudTrail Lakeのイベントデータストア(管理イベント)の作成
- CloudTrail Lakeのイベントデータストア(Inisightsイベント)の作成
Insightsイベント用のイベントデータストアを作成する前に、別途管理イベントを収集するイベントデータストアを作成しなければなりません。
これはInsightsイベントが管理イベントを分析元としているからであり、考え方としては証跡と同様になります。
以降のサービスの有効化の検証はOrganizations組織の管理アカウントではなく、シングルアカウント(メンバーアカウント)想定で行います。
CloudTrail Lakeのイベントデータストア(管理イベント)の作成
まずは管理イベントを記録するイベントデータストアを作成します。
CloudTrail コンソールのLake > イベントデータストア
のイベントデータストアの作成からイベントデータストアを作成します。
任意のイベントデータストア名を入力し、Pricing Optionはコストパフォーマンスの良いOne year〜
を選択。保持期間もPricing Optionに合わせて1 year〜
を選択しています。イベントデータストアはデフォルトでAWSが管理するキーを利用して暗号化されています。暗号化オプションはユーザー側で作成した独自のKMSキーを利用したい場合のみ実施ください。
Lake query federationを有効化すれば、イベントデータストアのデータをAthenaを利用して分析できますが今回は利用しません。気になる方は以下記事を併せてご確認下さい。
イベントタイプはAWSイベント
、AWSイベントの対応はCloudTrailイベント
を選択します。
CloudTrailイベントは管理イベント
のみを選択。その他の設定で〜現在のリージョンのみを含める
を選択すれば単一リージョンのデータストアも作成できそうですが今回は選択しませんでした。
ちなみに今回の作業をOrganizationsの管理アカウントで実行すると、組織内のすべてのアカウントについて有効化 のチェックボックスが有効化されていました。こちらにチェックを入れることで、イベントデータストアのログ収集対象を組織内のすべてのアカウントにできます。
管理イベントの設定はデフォルトのままAPIアクティブティの読み取り
、書き込み
のみを指定しました。まだInsightsイベントは有効化できないため Insightsを有効化する は一旦無視です。
イベントデータストアが作成できました。
CloudTrail Lakeのイベントデータストア(Inisightsイベント)の作成
続いてInsightsイベントのイベントデータストアを作成していきます。
イベントデータストア名を変更し、新しいイベントデータストアを作ります。
イベント対応は同じくAWSイベント、AWSイベントのタイプはCloudTrail Insights イベント
を選択します。
Insightsイベントの設定でソースイベントデータストアに先ほど作成した管理イベントのデータストアを指定し、InsightsタイプにApiCallRateInsight
とApiErrorRateInsight
の両方を選択しておきます。
Insightsデータストアも作成できました
Insightsイベントの挙動確認
ダッシュボードのクエリを実行する前に「コストが発生する可能性があります」といった警告文が出るので同意する
をクリックします。
するとダッシュボードが利用できるようになります。
ダッシュボードは以下の6つが事前に定義されています。現在は独自の追加はできません。
- Insight types
- 検知したInsigthsのタイプの割合を円グラフで表示
- Insights by date
- 日次で検知したInsightsの数をタイプ別に折れ線グラフで表示
- API call rate insights by event source
- APIコールレートで検知したinsightsイベントをイベントソースごとに表示
- API error rate insights by event source
- APIエラーレートで検知したinsightsイベントをイベントソースごとに表示
- Insights by top users
- insightsイベントを発生させたユーザーのTOP10を表示
- Insights events
- 発生したinsightsイベントの一覧
有効化直後のイベントデータストアでは分析対象のデータが乏しくダッシュボードの検索結果が見られないため、ここからは別のアカウントにて事前にInsightsイベントデータストアを有効化済みの環境で確認しました。
ダッシュボードのイメージにご利用ください。
各ダッシュボードにあるクエリエディタで表示して分析
を選ぶと、そのダッシュボードを表示させるために利用していたクエリ文が入力された状態でクエリエディタに遷移します。ダッシュボードで表示しきれなかったデータを確認することもできますし、ダッシュボードのものとは条件を少し変えてクエリを実行することもできます。
クエリエディタにはサンプルクエリ機能がありよく使われるクエリを参照できます。サンプルクエリ名を選択すればダッシュボードと同じくイベントデータストア固有の情報や日時に関する値を入れた状態でクエリエディタに遷移します。ここもとても良い感じです。
まだまだ検証したいところはありますが、一旦以上にしておきます。
最後に
今回はアップデートによって利用できるようになったCloudTrail LakeのCloudTrail Insightsイベントデータストアを試してみました。
参考になれば幸いです。
以上です。